package com.zaizai.utils.page;

import cn.hutool.core.convert.Convert;
import com.zaizai.utils.ServletUtils;

import static cn.hutool.core.convert.Convert.toStr;

/**
 * 表格数据处理
 * 
 * @author ruoyi
 */
public class TableSupport
{
    /**
     * 当前记录起始索引
     */
    public static final String PAGE_NUM = "pageNum";

    /**
     * 每页显示记录数
     */
    public static final String PAGE_SIZE = "pageSize";

    /**
     * 排序列
     */
    public static final String ORDER_BY_COLUMN = "orderByColumn";

    /**
     * 排序的方向 "desc" 或者 "asc".
     */
    public static final String IS_ASC = "isAsc";

    /**
     * 分页参数合理化
     */
    public static final String REASONABLE = "reasonable";

    /**
     * 获取分页参数对象
     * 该方法从请求中提取分页相关参数，并构建一个PageDomain对象用于存储这些参数
     * 这些参数包括页码、页面大小、排序列、排序方向以及是否合理分页
     * 如果请求中没有提供某个参数，则使用默认值
     *
     * @return PageDomain对象，包含了从请求中提取的分页参数
     */
    public static PageDomain getPageDomain()
    {
        // 创建一个新的PageDomain对象来存储分页参数
        PageDomain pageDomain = new PageDomain();

        // 设置页码，默认为第1页
        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));

        // 设置页面大小，默认每页10条记录
        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));

        // 设置排序列，默认为空
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));

        // 设置排序方向，默认为空
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));

        // 设置是否合理分页，默认为false
        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));

        // 返回构建好的PageDomain对象
        return pageDomain;
    }

    public static PageDomain buildPageRequest()
    {
        return getPageDomain();
    }
}
